static uint8_t ip[] = { 192, 168, 1, 64 };   // IP address of this Arduino
static uint8_t bcast[4] = { 192,168,1,255 };   // broadcast IP address
static uint8_t wake_mac[6] = { 0xC4,0x2C,0x03,0x10,0x49,0x1B };  // mac address of WOL machine
static uint8_t wake_mac2[6] = { 0xC4,0x2C,0x03,0x10,0x7B,0x9B };  // mac address of WOL machine
static uint8_t wake_mac3[6] = { 0xC4,0x2C,0x03,0x10,0xA7,0xA7 };  // mac address of WOL machine



static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };    // mac address of this Arduino
#include <Ethernet.h>
#include <UDPBytewise.h>
#define WOL_PORT 7

void ethernetSetup()
{
  Ethernet.begin(mac, ip);
}

void wakeComputers() {
wakeMac(wake_mac);
wakeMac(wake_mac2);
wakeMac(wake_mac3);
}



void wakeMac(uint8_t mac[]) {
    int i,j;
    UdpBytewise.begin(WOL_PORT);
    UdpBytewise.beginPacket(bcast, WOL_PORT);
    for (i = 0; i < 6; ++i) UdpBytewise.write(0xFF);
    for (i = 0; i < 16; i++) {
       for (j = 0; j < 6; j++) {
          UdpBytewise.write(mac[j]);
        }
    }
    UdpBytewise.endPacket();
}



